package GameServer;

import Library.Game.*;
import java.util.*;

/**
 * //TODO: javadoc
 */
public final class Land implements Comparable<String>
{
    /**
     *
     * @param id
     * @param name
     */
    public Land(int id, String name)
    {
        m_Id = id;
        m_Name = name;
    }
    
    /**
     *
     * @return
     */
    public int getId()
    {
        return m_Id;
    }
    
    /**
     * Naam van het land
     */
    protected String m_Name;
    /**
     * Sessie van de bezettende speler
     */
    protected ISession m_Owner;
    /**
     * aantal legers op dit land
     */
    protected int m_Armies;
    /**
     * lijst met namen van grenslanden met dit land
     */
    protected List<Integer> m_BorderLands = new ArrayList<Integer>();
    /**
     *
     */
    protected int m_Id;
    /**
     *
     */
    protected int m_BonusValue;
    
    /**
     * Geeft een lijst met grenslanden op van het huidige land Object
     * @return geeft buurlanden terug
     */
    public List<Integer> getBorderLands()
    {
        return Collections.unmodifiableList(m_BorderLands);
    }

    /**
     *
     * @param id
     */
    public void addBorderLand(int id)
    {
        m_BorderLands.add(id);
    }
    
    /**
     * geeft de huidige bezeter op van het huidige land Object
     * @return geeft bezetter terug
     */
    public ISession getOwner()
    {
        return m_Owner;
    }

    /**
     * zet de nieuwe bezetter op het huidige land Object
     * @param owner bezetter
     */
    public void setOwner(ISession owner)
    {
        m_Owner = owner;
    }

    /**
     * Geeft het aantal legers op van het huidige land Object
     * @return geeft het aantal legers terug
     */
    public int getArmies()
    {
        return m_Armies;
    }

    /**
     * zet het gewijzigde aantal legers op het huidige land Object
     * @param armies legers
     */
    public void setArmies(int armies)
    {
        m_Armies = armies;
    }

    /**
     * geeft de naam terug van het huidige land Object
     * @return landnaam
     */
    public String getName()
    {
        return m_Name;
    }

    /**
     * Vergelijkt dit object.m_Name met een landnaam.
     * @param o landnaam
     * @return 0 als de landen dezelfde naam hebben
     */
    public int compareTo(String o)
    {
        return m_Name.compareTo(o);
    }
}
